package com.ruteroelmeromero.vista;

import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import com.ruteroelmeromero.utils.Conexion;

@ManagedBean
@SessionScoped
public class Producto extends Manejador implements Controlador{
	private String nombre;
	private long producto;
	public long getProducto() {
		return producto;
	}

	public void setProducto(long producto) {
		this.producto = producto;
	}

	private double precio;

	public double getPrecio() {
		return precio;
	}

	public void setPrecio(double precio) {
		this.precio = precio;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public void llenar(Map<String, String> dato) {
		if (dato == null) {
			setProducto(0);
			setPrecio(0);
			setNombre(null);
		} else {
			setProducto(Long.parseLong(dato.get("producto")));
			setNombre(dato.get("nombre"));
			setPrecio(Double.parseDouble(dato.get("precio")));
		}
	}

	public String regresar() {
		return "listaProducto.xhtml";
	}

	public String guardar() {
		String mensaje = "operacion exitosa";
		try {
			String sql = "";
			Object[][] params = null;
			if (producto != 0) {
				sql = "UPDATE producto SET nombre=?,precio=? WHERE producto=?";
				params = new Object[1][3];
			} else {
				sql = "INSERT INTO producto (nombre,precio) VALUES (?,?)";
				params = new Object[1][2];
			}
			params[0][0] = getNombre();
			params[0][1] = getPrecio();
			if (producto != 0) {
				params[0][2] = getProducto();
			}
			Conexion.update(sql, params);
			limpiarLista();
		} catch (Exception e) {
			mensaje = "Error al guardar";
			e.printStackTrace();
		}
		mensaje(mensaje);
		return "listaProducto.xhtml";
	}

	public String borrar() {
		String mensaje = "operacion exitosa";
		try {
			String sql = "";
			Object[][] params = null;
			sql = "DELETE FROM producto WHERE producto=?";
			params = new Object[1][1];
			params[0][0] = getProducto();
			Conexion.update(sql, params);
			limpiarLista();
		} catch (Exception e) {
			mensaje = "Error al eliminarr";
			e.printStackTrace();
		}
		mensaje(mensaje);
		return "listaProducto.xhtml";
	}

	private void limpiarLista() {
		FacesContext context = FacesContext.getCurrentInstance();
		ListaProducto listaProducto = (ListaProducto) context.getApplication()
				.evaluateExpressionGet(context, "#{listaProducto}",
						ListaProducto.class);
		if (listaProducto == null) {
			listaProducto = new ListaProducto();
		}
		listaProducto.setLista(null);
	}

}
